package com.poem.springboot_rear.entity;

import cn.hutool.core.annotation.Alias;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;

import java.util.ArrayList;
import java.util.List;

/**
 * 功能：用户表
 * 作者：小祝小祝
 * 日期： 2023/11/12 20:42
 */

@Data   // get set 方法
@AllArgsConstructor  // 有参构造函数、构造器
@NoArgsConstructor  // 无参构造函数、构造器
@ToString   // toString方法
//@Builder  // 链式调用，帮创建一个User对象   优雅 太优雅了
@TableName("user")  // 对应数据库的表名
public class User {

    @TableId(type = IdType.AUTO) //主键
    @Alias("序号")
    private Integer id; // 主键id
    @Alias("用户名")
    private String username; // 用户名
    @Alias("密码")
    private String password; // 密码
    @Alias("姓名")
    private String name; // 姓名
    @Alias("电话")
    private String phone; // 电话
    @Alias("邮箱")
    private String email; // 邮箱
    @Alias("地址")
    private String address; // 地址
    @Alias("头像")
    private String avatar; // 头像
    @Alias("角色")
    private String role;  // 角色
    @Alias("父级ID")
    @TableField("parent_id")
    private Integer parentId; // 父级ID
    @Alias("层级")
    private Integer level;  // 层级

    @TableField(exist = false)  // 表示这个不属于表里的字段
    private String token; // 存储生成的token用来校验

    // 定义一个集合组装子集
    @TableField(exist = false)
    private List<User> children = new ArrayList<>();
    // 是否有子集
    @TableField(exist = false)
    private String hasChildren;

//    public static void main(String[] args) {
//        User user = User.builder().name("小祝小祝").build();
//        System.out.println(user);
//    }
}
